<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!--xtiger_start-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cn" lang="cn">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="x-ua-compatible" content="ie=7"/>
    <title>XNet framework 用户指南 - XNet framework中文手册|用户手册|用户指南|Wiki文档</title>
    <link rel="stylesheet" type="text/css" media="all" href="http://www.openxtiger.org/xtiger_guide/xtigerguide.css"/>
    <script type="text/javascript" src="http://www.openxtiger.org/xtiger_guide/js/nav.js"></script>
    <script type="text/javascript" src="http://www.openxtiger.org/xtiger_guide/js/prototype.lite.js"></script>
    <script type="text/javascript" src="http://www.openxtiger.org/xtiger_guide/js/moo.fx.js"></script>
    <script type="text/javascript" src="http://www.openxtiger.org/xtiger_guide/js/user_guide_menu.js"></script>

    <meta name="robots" content="all"/>
    <meta name="author" content="openxtiger xtiger"/>
    <meta name="description" content="XNet framework 中文手册, XNet framework 用户指南, XNet framework User Guide, Wiki 文档"/>
</head>
<body>
<!-- START NAVIGATION -->
<div id="nav">
    <div id="nav_inner">
        <script type="text/javascript">create_menu('http://www.openxtiger.org/xtiger_guide/');</script>
    </div>
</div>
<div id="nav2"><a href="javascript:void(0);" name="top" onclick="myHeight.toggle();"><img
        src="http://www.openxtiger.org/xtiger_guide/images/nav_toggle_darker.jpg" width="154" height="43" border="0"
        title="切换目录" alt="切换目录"/></a></div>
<div id="masthead">

    <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
        <tr>
            <td width="350"><h1>XNet framework 用户指南 版本 1.0.0</h1></td>
            <td>编辑文档、查看近期更改请 <a href="http://hi.microsoul.com/home/do.php?ac=36724f73d2021ed6fb93c71956743feb">登录</a> 或 <a
                    href="http://hi.microsoul.com/home/do.php?ac=f15686a09baf2e7ee241541f4678254c">注册</a> 　<a
                    href="http://hi.microsoul.com/home/do.php?ac=lostpasswd">找回密码</a></td>
            <td id="breadcrumb_right"><a href="http://www.openxtiger.org/xtiger_guide/toc.html">目录页</a></td>

        </tr>
    </table>
</div>
<!-- END NAVIGATION -->
<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
    <tr>
        <td id="breadcrumb">
            <a href="http://www.openxtiger.org" target="_blank">开源小老虎</a>&nbsp;&#8250;&nbsp;XNet framework 用户指南
        </td>
        <td  class="searchbox">搜索用户指南</td>
        <td  class="searchbox1" width="340">
            <script type="text/javascript"><!--
              google_ad_client = "pub-9585817794275200";
              google_ad_format = "configurable_sdo";
              google_link_target = 2;
              google_color_bg = "ffffff";
              google_color_link = "000000";
              google_color_text = "000000";
              google_encoding = "UTF-8";
              google_ad_channel = "4156786271";
              google_box_len = 31;
              google_ad_height = 30;
              google_ad_width = 330;
//-->
            </script>

            <script type="text/javascript"
              src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
            </script>
        </td>
    </tr>
</table>
<!-- END BREADCRUMB -->
<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
    <a href="http://www.openxtiger.org/xtiger_guide/index.html">查看原文</a>

</div>
<!--<br clear="all" />-->
<div class="center"><a href="http://www.openxtiger.org" target="_blank"><img src="http://hi.microsoul.com/images/logo.gif" height="65" width="135" border="0" alt="嗨！微企"/></a></div>
<!--xtiger_end-->

<!-- START CONTENT -->
<div id="content">
    <h1>模型</h1>

    <p>模型对于那些想用传统MVC方式的人来说是<strong>可选</strong>的。</p>


    <ul>
        <li><a href="#what">什么是模型?</a></li>
        <li><a href="#anatomy">剖析模型</a></li>

        <li><a href="#loading">载入模型</a></li>
        <li><a href="#auto_load_model">自动载入模型</a></li>
        <li><a href="#conn">连接数据库</a></li>

    </ul>


    <h2><a name="what">什么是模型?</a></h2>

    <p>模型是专门用来和数据库打交道的PHP函数集。例如，假设你想用XNet framework来做一个Blog。你可以写一个模型类，里面包含插入、更新、删除Blog数据的方法。下面的例子将向你展示一个普通的模型:</p>
    <pre>
    function blog_getEntries($load) {
        $query = $load['db']->get('entries', 10);
        return $query->result();
    }

    function blogmodel_insert_entry($load) {
        $load['db']->insert('entries', array('title'=>$_POST['title'],'content'=>$_POST['content'],'date'=>time());
    }
    </pre>

    <p>注意: 上面用到的函数是 <a href="../database/active_record.html">Active Record</a> 数据库函数.</p>

    <!--<p class="important"><strong>备注:</strong> 为了简单一点，我们直接使用了$_POST。不过，这不太好，平时我们应该使用 <a href="../libraries/input.html">输入类</a>：$this-&gt;input-&gt;post('title')
    </p>-->

    <h2><a name="anatomy"></a>剖析模型</h2>

    <p>模型类文件存放在 应用程序的<dfn>/models/</dfn> 文件夹。 如果你愿意，可以在里面建立子文件夹。</p>

    <p>最基本的模型必须像这样:</p>


    <pre>
    function <var>model_name</var>_<var>method</var>($load ) {

    }
    </pre>

    <p><var>model_name</var> 是模型的名字。 控制器可以通过<kbd>$load('model',model_name);</kbd>调用此模型。</p>

    <p>文件名应该和模型名一致。</p>

    <h2><a name="loading">载入模型</a></h2>

    <p>模型可以在 <a href="controllers.html">controller</a> 中被引用。
        就像这样:</p>

    <code>$m = $load('model',<var>model_name</var>);</code>

    <p>如果模型文件在子文件夹下，引用的时候要带上相对路径名。例如：如果你有一个模型 <dfn>/models/blog/queries.php</dfn>。
        下面的代码可以引用它:</p>

    <code>$m = $load('model',<var>'blog/queries'</var>);</code>


    <p>模型一旦被载入，你就能通过下面的方法使用它:</p>

    <pre>
    $m = $load('model',<var>model_name</var>);
        
    $m(<var>method</var>);
    </pre>


    <p>这里有个控制器的例子，加载一个模型，然后通过视图显示出来</p>


    <pre>
    function hi_blog_execute($x) {
        $load = $x();
        $m = $load('model','blogmodel');
        $x('query',$m('blog_getEntries'));
        return 'blog';
    }
    </pre>

    <h2><a name="auto_load_model" id="auto_load_model"></a>自动载入模型</h2>

    <p>如果您需要一个在整个项目中都起作用的特定模型，您可以让 XNet framework 在初始化时自动装载它。然后在自动装载数组中添加上这个模型。</p>

    <h2><a name="conn"></a>连接到数据库</h2>

    <p>当一个模型被载入时，它并不会自动连接数据库。以下方法可以使您连接数据库:</p>

    <ul>
        <li>您可以使用标准方法来连接数据库（<a href="../database/connecting.html">说明</a>）, 也可以通过控制器或者您的自定义模型。</li>

        <li>您可以把第三个参数设置为TRUE来使模型装载函数自动连接数据库，连接配置可以在您的数据库配置文件中可以定义:</li>

        <code>$this-&gt;load-&gt;model('<var>Model_name</var>', '', <kbd>TRUE</kbd>);</code>

        <li>您可以手动设定第三个参数来载入您的自定义数据库配置:

            <code>$config['hostname'] = "localhost";<br/>
                $config['username'] = "myusername";<br/>

                $config['password'] = "mypassword";<br/>
                $config['database'] = "mydatabase";<br/>
                $config['dbdriver'] = "mysql";<br/>
                $config['dbprefix'] = "";<br/>
                $config['pconnect'] = FALSE;<br/>
                $config['db_debug'] = TRUE;<br/>

                <br/>
                $this-&gt;load-&gt;model('<var>Model_name</var>', '', <kbd>$config</kbd>);</code></li>

    </ul>
    <p>&nbsp;</p>

    <div id="Contributors">
        翻译贡献者:
        analyzer, Hex, longbill, shishirui, soyota
    </div>
    <div id="DocDate">

        最后修改: 2008-11-26 23:01:42
    </div>
</div>


<!-- END CONTENT -->
<div id="footer">
    <p>
        <a href="http://www.openxtiger.org/xtiger_guide">页首</a>
    </p>

    <p>XNet framework &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2009 &nbsp;&middot;&nbsp;
        <a href="http://openxtier.org/">openXtiger Org.</a></p>

</div>
<script type="text/javascript">
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
    try {
        var pageTracker = _gat._getTracker("UA-8286166-6");
        pageTracker._trackPageview();
    } catch(err) {
    }</script>
</body>
</html>